

package com.scs.application.modules.upms.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.scs.application.core.model.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.util.Date;

/**
* 实体对象
*/
@TableName("access_log")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class AccessLog extends BaseEntity implements Serializable {

    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    /** 设备类型 */
    @Length(max=1, message="设备类型长度必须介于 0 和 1 之间")
    private String deviceType;

    /** 登录类型 */
    @Length(max=1, message="登录类型长度必须介于 0 和 1 之间")
    private String isLogin;

    /** 用户编码 */
    @Length(max=30, message="用户编码长度必须介于 0 和 30 之间")
    private String userCode;

    /** 请求路径 */
    @Length(max=200, message="请求路径长度必须介于 0 和 200 之间")
    private String requestUri;

    /** 请求描述 */
    @Length(max=200, message="请求描述长度必须介于 0 和 200 之间")
    private String requestDesc;

    /** 请求方法 */
    @Length(max=20, message="请求方法长度必须介于 0 和 20 之间")
    private String requestMethod;

    /** 请求参数 */
    @JsonIgnore
    @JSONField(serialize = false,deserialize = false)
    @Length(max=4000, message="请求参数长度必须介于 0 和 4000 之间")
    private String requestParams;

    /** 请求IP */
    @Length(max=100, message="请求IP长度必须介于 0 和 100 之间")
    private String requestIp;

    /** 请求时间 */
    private Date requestTime;

    /** 用户代理 */
    @Length(max=300, message="用户代理长度必须介于 0 和 300 之间")
    private String userAgent;

    /** 设备名称 */
    @Length(max=100, message="设备名称长度必须介于 0 和 100 之间")
    private String deviceName;

    /** 浏览器名 */
    @Length(max=100, message="浏览器名长度必须介于 0 和 100 之间")
    private String browserName;

    /** 执行耗时 */
    private Integer elapsedMs;

    /** 是否异常 */
    @Length(max=1, message="是否异常长度必须介于 0 和 1 之间")
    private String isException;

    /** 异常类型 */
    @Length(max=1, message="异常类型长度必须介于 0 和 1 之间")
    private String exceptionType;

    /** 异常信息 */
    private String exceptionMsg;

}
